package writtenTraining.day30;

import java.util.*;

/**
 * day30:(1)数学+模拟：爱吃素
 */

public class Main {
    public static void main(String[] args) {
        // 输入数据
        Scanner in = new Scanner(System.in);
        int T = in.nextInt();
        while(T-- > 0) {
            long num1 = in.nextLong(), num2 = in.nextLong();
            long tar = num1 * num2;
            long i = 0;
            // 特殊情况判断
            if(tar == 1 ) {
//                 都为 1 
                System.out.println("NO");
            } else if(num1 == 1){
                 // 判断结果
                System.out.println(check(num2) ? "YES" : "NO");
            } else if(num2 == 1) {
                System.out.println(check(num1) ? "YES" : "NO");
            } else {
                // 都不为 1
                System.out.println("NO");
            }
            
           
            }
           
        }
    
        private static boolean check(long num) {
             for(long i = 2; i <= Math.sqrt(num); i++) {
                    if(num % i == 0) {
                        return false;
                    }
            }
            
            return true;
        }
}

/**
 * day30:(2)排序+二分：AB33 相差不超过k的最多数
 */

 class Main1 {
    public static void main(String[] args) {
        // 排序 + 二分
        // 输入数据
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(), k = in.nextInt();
        long[] nums = new long[n];
        for(int i = 0; i < n; i++) {
            nums[i] = in.nextLong();
        }

        // 排序
        Arrays.sort(nums);

        // 二分
        int ret = 0;
        for(int i = 0; i < n; i++) {
            long endNum = nums[i] + k;
            int left = i , right = n - 1;
            while(left < right) {
                int mid = left + ((right - left + 1) / 2);
                if(nums[mid] <= endNum) {
                    left = mid;
                } else {
                    right = mid - 1;
                }
            }
            ret = Math.max(ret,right - i + 1);
        }

        // 输出结果
        System.out.println(ret);
    }
}

/**
 * day3:(2)排序 + 滑动窗口：AB33 相差不超过k的最多数
 */

 class Main2 {
    public static void main(String[] args) {
        // 排序 + 滑动窗口
        // 输入数据
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(), k = in.nextInt();
        long[] nums = new long[n];
        for(int i = 0; i < n; i++) {
            nums[i] = in.nextLong();
        }

        // 排序
        Arrays.sort(nums);
        int ret = 0;

        for(int left = 0, right = 0; right < n ; right++) {
            // 入窗口
            // 出窗口
            while(nums[right] - nums[left] > k) {

                left++;
            }

            // 更新结果
            ret = Math.max(ret,right - left + 1);
        }

        // 输出结果
        System.out.println(ret);
    }
}


/**
 * day30:(3)动态规划：DP19 最长公共子序列(一)
 */


 class Main3 {
    public static void main(String[] args) {
        // 动态规划

        // 输入数据
        Scanner in =  new Scanner(System.in);
        int n = in.nextInt(), m = in.nextInt();
        String str1 = in.next(), str2 = in.next();

        // 创建dp
        // 初始化
        // 填表
        int[][] dp = new int[n + 1][m + 1];
        int ret = 0;
        for(int i = 1; i <= n; i++) {
            for(int j = 1; j <= m; j++) {
                if(str1.charAt(i - 1) == str2.charAt(j - 1)) {
                    // 如果相等就在前面相等的基础上 + 1
                    dp[i][j] = dp[i-1][j-1] + 1;
                } else {
                    // 如果不相等就继承前面的
                    dp[i][j] = Math.max(dp[i-1][j],dp[i][j-1]);
                }
                ret = Math.max(ret,dp[i][j]);
            }
        }




        // 返回值
        System.out.println(ret);
    }
}
